package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import com.project.entity.OutOrder;
import com.project.entity.PreOutOrder;
import com.project.entity.Product;

import java.util.List;

/**
 * 出库业务接口
 */
public interface PreOutOrderService extends IService<PreOutOrder> {
    /**
     * 按客户ID、销售员ID查询出库单信息集合
     * @param customId 客户ID
     * @param userId 销售员ID
     *处理：根据客户ID、销售员ID联表（t_preOutOrder、t_custom、t_product、t_user）查询出库信息
     * @return 出库对象集合（出库ID、客户名称、销售员姓名、出库数量、商品对象（商品ID、商品名称、厂家、现有库存、建议销售价））
     */
    public List<PreOutOrder> findById(Integer customId,Integer userId);

    /**
     * 修改出库数量
     * 1、根据商品ID查询商品表库存数量是否 >= 新出库数量
     * 2、如果 满足 ：按出库ID、商品ID、新出库数量修改出库数量；如果不满足：告知用户库存不足，修改失败
     * @param preOutId 出库ID
     * @param productId 商品ID
     * @param newOutNum 新出库数量
     */

    public boolean UpdateOutNum(Integer preOutId,Integer productId,Integer newOutNum);

    /**
     * 按商品ID添加商品
     * 1、按商品ID、客户ID、销售员ID查询出库表中记录数
     * 2、记录数为零：添加新出库单表记录，出库数量默认为1；记录数不为零：出库数量加一。
     * @param productId 商品ID
     * @param customId 客户ID
     * @param sellerId 销售员ID
     */
    public void addProductById(Integer productId,Integer customId,Integer sellerId);

    /**
     * 按商品ID移除商品
     * 按商品ID、客户ID、销售员ID删除出库表中记录
     * @param productId 商品ID
     * @param customId 客户ID
     * @param sellerId 销售员ID
     */
    public void delProductById(Integer productId,Integer customId,Integer sellerId);

    /**
     * 出库
     * @param outOrder 销售对象（客户ID、销售员ID、销售日期、送货地址）
     *  1、添加新销售单（同时返回销售单ID）
     *  2、根据客户ID查询所有出库信息，得到出库集合集合，计算出库商品总价，封装为订单总价，完成销售单的添加；完成商品库存数量的修改
     *  3、根据客户ID，删除该客户入库表中记录
     */
    public void outBound(OutOrder outOrder);
}
